{"componentChunkName":"component---src-templates-post-jsx","path":"/벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - cs/","result":{"data":{"site":{"siteMetadata":{"title":"jigglog","author":"JIGGLYPOP","homepage":"http://jigglog.s3-website.ap-northeast-2.amazonaws.com"}},"post":{"id":"5a3122e5-780f-5fc3-ad57-3210f3703f3c","html":"<blockquote>\n<p> 백엔드 면접 질문용 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 다시 책이나 자료를 참고하여 공부하세요</p>\n</blockquote>\n<hr>\n<h1 id=\"cs-관련-지식\" style=\"position:relative;\"><a href=\"#cs-%EA%B4%80%EB%A0%A8-%EC%A7%80%EC%8B%9D\" aria-label=\"cs 관련 지식 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CS 관련 지식</h1>\n<h2 id=\"1-네트워크\" style=\"position:relative;\"><a href=\"#1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC\" aria-label=\"1 네트워크 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1) 네트워크</h2>\n<hr>\n<h4>2) Long-Polling과 Websocket, Server-Sent Event</h4>\n<h5>(1) Polling</h5>\n<ul>\n<li>클라이언트가 서버에서 HTTP Request를 주기적으로 요청하고, 서버가 응답하는 방식 </li>\n<li>클라이언트가 주기적으로 요청을 하기 때문에 클라이언트의 수가 증가하면 요청의 수도 함께 증가하기 때문에 서버의 부담이 커짐</li>\n<li>또한, 요청과 응답후에는 연결이 끊어지기 때문에 요청할 때마다 항상 연결을 맺는 과정이 필요</li>\n<li>이 부분에서 많은 비용이 소모.</li>\n</ul>\n<h5>(2) Long Polling</h5>\n<ul>\n<li>클라이언트가 서버에 HTTP Request를 요청하면, 서버는 대가하고 있다가 이벤트가 발생했을 때, 클라이언트에게 응답을 하는 방식이다. </li>\n<li>Polling 처럼 불필요한 요청에 계속 응답하는 것이 아니기 때문에 요청에 따른 커넥션 맺는 과정에서 발생하는 비용이 줄어듦</li>\n<li>클라이언트의 수가 증가하면 그에 따른 응답을 해야하는 수도 증가하기 때문에 Polling과 큰 차이는 없게 됨</li>\n<li>다수의 클라이언트가 동시에 이벤트가 발생할 경우 서버는 각 클라이언트에게 응답을 하게 되고, 그 다수의 클라이언트는 서버에게 곧바로 요청을 하기 때문에 이 순간 서버의 부담이 커짐</li>\n</ul>\n<h5>(3) Streaming</h5>\n<ul>\n<li>클라이언트와 서버 사이의 연결을 끊지 않고 필요한 메세지를 계속 전달하여 커넥션을 맺는 과정에서 발생하는 부담 경감</li>\n</ul>\n<h5>(4) WebSocket</h5>\n<ul>\n<li>클라이언트와 서버간의 전이중 통신을 지원하기 위한 통신 프로토콜</li>\n</ul>\n<p> (1) 클라이언트와 서버간에 전이중 통신을 수행하려면 클라이언트가 서버로 HTTP UPGRADE 요청을 보내야 한다. 이를 웹 소켓 프로토콜 핸드 쉐이크라고한다.</p>\n<p> (2) 서버가 커넥션을 UPGRADE 할 수 있는 경우, HTTP 101 응답을 클라이언트에게 보냄</p>\n<p>서버는 핸드 쉐이크가 성공적으로 수행되었다고 판단하고, 서버와 클라이언트 사이의 커넥션을 웹 소켓 프로토콜로 UPGRADE 한다. </p>\n<p>클라이언트와 서버 사이의 HTTP 101 응답이 전달되는 순간, 서버와 클라이언트 사이의 커넥션은 HTTP 프로토콜이라고 하지 않는다. </p>\n<p>그리고 이순간 양방향 통신이 가능해진다.</p>\n<p> (3) 웹 소켓으로 연결된 모든 클라이언트는 다른 클라이언트에게 커넥션을 끊는 요청을 전송</p>\n<h4>2) TCP와 UDP</h4>\n<ul>\n<li>TCP와 UDP : 전송 계층에서 패킷을 보내기 위한 프로토콜</li>\n</ul>\n<h5>(1) TCP (Transmission Control Protocol)</h5>\n<ul>\n<li>연결형 서비스</li>\n<li>3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 해제</li>\n<li>높은 신뢰성과 전송 순서를 보장</li>\n<li>1:1 통신에서 사용</li>\n<li>UDP보다는 속도가 느림</li>\n<li>파일전송과 같은 신뢰성이 중요한 서비스에 사용</li>\n</ul>\n<h5>(2) UDP (User Datagram Protocol)</h5>\n<ul>\n<li>비연결형 서비스.</li>\n<li>패킷을 주고 받을 때 신호 절차를 거치지 않음</li>\n<li>신뢰성이 낮으며 전송 순서가 바뀔 수 있음</li>\n<li>1:N 이나 N:N 통신에서 사용</li>\n<li>TCP보다 속도가 빠름</li>\n<li>UDP도 개발자가 직접 신뢰성을 보장하도록 할 수 있음. HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 함</li>\n<li>스트리밍, RTP와 같이 연속성이 더 중요한 서비스에 사용</li>\n</ul>\n<h5>(3) TCP 3, 4 way handshake</h5>\n<ul>\n<li><code class=\"language-text\">TCP 3way handshake</code></li>\n<li>가상회선을 수립하는 단계 </li>\n<li>클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정</li>\n<li>SYN, ACK 패킷을 주고받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한값을 전송</li>\n<li>장치들 사이의 접속을 성립하기 위한 절차로 양 장치 모두 데이터 통신 준비가 되었다는 것을 보장</li>\n<li>SYN(n) -> ACK(n + 1) / SYN(m) -> ACK(m + 1) (SASA)</li>\n</ul>\n<h5>(4) TCP 4way handshake</h5>\n<ul>\n<li>연결을 해제하는 단계</li>\n<li>클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송해주고 최종적으로 연결 해제</li>\n<li>단, 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기하는데, 혹시나 패킷이 나중에 도착할 수 있기 때문</li>\n<li>장치들 사이의 통신을 종료하기 위한 절차</li>\n<li>FIN (Client) -> ACK (Server) -> FIN (Server) -> ACK(Client) (FAFA)</li>\n</ul>\n<h4>4) HTTP와 HTTPS</h4>\n<ul>\n<li>웹 프로토콜 : 웹에서 쓰이는 통신규약</li>\n<li>민감한 정보가 있는 페이지의 경우 Https 그렇지 않으면 http</li>\n<li>Http 1.1과 2.0: 속도의 차이 : 2.0같은 경우는 헤더를 압축해서 보내기도하고, 한번의 연결로 동시에 여러 메시지를 주고 받음</li>\n</ul>\n<h5>(1) HTTP</h5>\n<ul>\n<li>웹 프로토콜중 하나로 HTTP가 가장 많이 쓰임. 요청과 응답으로 이루어져 있어 어떤 데이터를 요청하면, 어느 데이터를 준다고 응답</li>\n<li>따로 암호화 과정을 거치지 않음</li>\n<li>http방식이 https방식보다 빠름</li>\n<li>중간에 패킷을 가로챌 수 있고, 수정할 수 있어 보안이 취약. 민감한 정보를 다룰 때 항상 변조, 해킹 가능성을 생각해야 함</li>\n<li>네트워크상에서 정보를 누군가가 마음대로 열람, 수정이 가능</li>\n</ul>\n<h5>(2) HTTPS</h5>\n<ul>\n<li>HTTP에 보안 계층을 추가한 것</li>\n<li>누가 볼수 없도록 막음. 중간에 암호화 계층을 거쳐서 패킷을 암호화. 제3자 인증, 공개키 암호화, 비밀키 암호화를 사용</li>\n<li>Https는 설치 및 인증서를 유지하는데 추가적인 비용이 발생</li>\n</ul>\n<h5>(3) 암호화</h5>\n<ul>\n<li>제3자 인증은 믿을 수 있는 인증기관에 등록된 인증서만 신뢰하는 것</li>\n<li><code class=\"language-text\">공개키 암호화</code> : 비밀키를 공유하기 위해 사용</li>\n<li><code class=\"language-text\">비밀키 암호화</code> : 통신하는 데이터를 암호화하는데 사용</li>\n</ul>\n<h4>6) GET과 POST의 차이점</h4>\n<h5>(1) GET</h5>\n<ul>\n<li>서버에 존재하는 정보를 요청</li>\n<li>이 때 반환되는 정보는 정보 자체가 아니라 정보의 표현</li>\n<li>Request Body는 입력하지 않는 것이 일반적이며, 레거시 시스템의 경우 요청을 받아들이지 않을 수 있음</li>\n<li>캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청이 맞지 않을 수 있음</li>\n</ul>\n<h5>(2) POST</h5>\n<ul>\n<li>서버에 정보를 생성하는 것을 요청</li>\n<li>예전 HTTP 통신은 POST 요청으로 데이터 삭제, 수정도 form 요청으로 같이 수행 </li>\n<li>POST 요청은 서버의 상태를 변경시키기 때문에 멱등성이 유지되지 않음</li>\n<li>Request Body에 요청하는 데이터를 담아 전송</li>\n</ul>\n<h4>7) HTTP 메서드</h4>\n<h5>1) GET</h5>\n<ul>\n<li>서버에 존재하는 데이터를 요청하는 것 (CRUD의 R) </li>\n<li>요청된 자원을 수정할 때, 자원내 필드를 전체 수정할 때 사용 (만약 일부만 전달할 경우, 그외 필드들은 NULL or 초기값 처리).</li>\n<li>Http Request Message의 Header 부분의 URL에 담겨서 전송되며, BODY는 비어있는 상태 URL에 ?뒤에 데이터를 가져오기 위한 조건이 포함</li>\n<li>URL에 조건이 포함되었기 때문에 데이터의 제한이 존재하며, URL에 노출되기 때문에 보안의 위험존재</li>\n</ul>\n<h5>2) POST</h5>\n<ul>\n<li>서버에 데이터를 생성하는 것을 요청 (CRUD의 C) </li>\n<li>Http Request Message의 BODY 부분에 클라이언트의 요청을 처리하기 위한 데이터가 존재</li>\n<li>URL에 노출되지 않기 때문에 보안의 위험이 존재하지 않으며 보내는 데이터의 제한이 없음</li>\n</ul>\n<h5>3) PUT</h5>\n<ul>\n<li>서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성 (CRUD의 C,U)</li>\n</ul>\n<h5>4) DELETE</h5>\n<ul>\n<li>서버에 데이터를 제거할 것을 요청. 존재하지 않아도 동일하게 동작합 (CRUD의 D)</li>\n</ul>\n<h5>5) PATCH</h5>\n<ul>\n<li>서버에 존재하는 데이터를 일부 수정(CRUD의 U)</li>\n<li>GET과 POST를 상황에 따라 써야하는 이유는, GET 요청은 캐싱이 된다. 그뜻은 웹 서버에 요청이 전달되지 않고, 캐시에서 데이터를 전달해준다는 것</li>\n<li>만약 글작성을 GET으로 처리한다면, 똑같은 요청을 처리했을 때, 캐싱으로 인해 두번째부터의 동일한 글작성은 서버에 전달되지 않고 첫번째 캐싱된 결과를 계속 전달받을 수 있기 때문에 METHOD를 명확하게 구분해서 써야 함</li>\n</ul>\n<h4>8) RESTful</h4>\n<ul>\n<li>HTTP URI를 통해 자원을 표시하고 HTTP Method를 통해 자원에 대한 처리를 표현</li>\n<li>사람이 읽을 수 있는 API라는 것이 특징</li>\n<li>HTTP를 사용하기 때문에 HTTP의 특성을 그대로 반영하고 별도의 인프라 구축이 필요없음</li>\n<li>URI로 접근가능하고 내용이 JSON,XML 등으로 표현된 자원에 대한 행위를 HTTP Method로 정의</li>\n<li>RESTful하다라는 것은 REST API의 설계의도를 명확하게 지켜주는 것 </li>\n<li>슬래시를 통해 계층관계를 표시한다던가 숫자는 id를 나타낸다든가 동사보단 명사를 위주</li>\n</ul>\n<h5>(1) 장점</h5>\n<ul>\n<li>검색엔진에 최대한 많은 페이지가 인덱싱되기를 원하는 경우 REST로 설계하고 html을 서버사이드 렌더링하여 sitemap을 형성하는 것이 쉬움</li>\n<li>API 명세서를 읽지 않고도 요청을 알아보기 쉬움</li>\n</ul>\n<h5>(2) 단점</h5>\n<ul>\n<li>이 말은 공식화된 레퍼런스가 없기 때문에, 사람마다 다르게 해석하여 사용할 수도 있음</li>\n<li>특정 클라이언트에서는 HTTP Method나 상태코드 중에 사용할 수 없는 것들이 있음</li>\n<li>실제 API를 개발할 때 REST로 디자인하면 굉장히 복잡한 비즈니스가 있음</li>\n</ul>\n<h5>(3) HATEOAS</h5>\n<ul>\n<li>동적인 API를 제공할 수 있음(모든 관련된 동작을 URI를 통해 알려줌) </li>\n<li>클라이언트가 API의 변화에 일일이 대응하지 않아도 됨</li>\n</ul>\n<h4>9) CORS</h4>\n<ul>\n<li>서로 다른 도메인간에 자원을 공유하는 것</li>\n<li>도메인 또는 포트가 다른 서버의 자원을 요청하면 발생 하는 문제 </li>\n<li>웹 프론트 측에서 request header에 CORS 관련 옵션을 넣어주고, 서버에서는 해당 프론트 요청을 허용</li>\n<li>대부분의 브라우저에서는 이를 기본적으로 차단하며 서버측에서 헤더를 통해서 사용가능한 자원을 알려줌</li>\n<li>preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청</li>\n<li>OPTIONS 메서드로 요청하며 CORS를 허용하는지 확인</li>\n<li>CORS가 허용된 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답</li>\n</ul>\n<h4>10) OSI 7 Layer</h4>\n<ul>\n<li>네트워크에서 통신이 일어나는 과정을 7단계로 캡슐화하여 서로 다른 동작을 각 layer에서 담당하는 것</li>\n<li>통신이 일어나는 과정을 단계적으로 파악할 수 있으며 layer 별로 각기 다른 동작을 수행하기에 오류 탐지가 용이</li>\n</ul>\n<h5>(1) 물리 계층(Physical layer)</h5>\n<ul>\n<li>전기적, 기계적 특성을 바탕으로 비트 흐름을 전송. 이 계층은 데이터를 전달만 할 뿐, 데이터가 무엇인지 전혀 신경쓰지 않음(케이블, 리피터, 허브 등)</li>\n</ul>\n<h5>(2) 데이터 링크 계층(DataLink layer)</h5>\n<ul>\n<li>안전한 정보 전달을 보장. 물리 계층에서 전달 받은 프레임의 오류를 찾고 필요시 재전송을 요청</li>\n</ul>\n<h5>(3) 네트워크 계층(Network layer)</h5>\n<ul>\n<li>오류 없는 패킷을 목적지까지 안전하고 빠르게 전달하는 경로(라우팅)를 찾는 계층</li>\n</ul>\n<h5>(4) 전송 계층 (Transport layer)</h5>\n<ul>\n<li>전송을 통해 통신을 활성화하는 계층. 패킷의 전송이 유효한지 확인하고 실패한 패킷을 재전송. end-to-end 통신의 신뢰성을 보장</li>\n<li>오류 검출, 흐름제어, 중복 검사를 수행</li>\n</ul>\n<h5>(5) 세션 계층(Session layer)</h5>\n<ul>\n<li>포트를 연결하여 논리적인 통신을 가능하게 하는 계층</li>\n</ul>\n<h5>(6) 표현 계층(Presentation layer)</h5>\n<ul>\n<li>응용 프로그램을 위해 형식상 차이를 갖는 데이터를 인코딩하여 일관된 형태의 데이터를 표현하는 계층</li>\n</ul>\n<h5>(7) 응용 계층(Application layer)</h5>\n<ul>\n<li>사용자와 직접 상호작용하는 계층(크롬, 파이어폭스)</li>\n</ul>\n<h4>(11) CSR / SSR</h4>\n<h5>(1) CSR의 과정</h5>\n<ul>\n<li>서버가 브라우저에게 응답을 보냄 </li>\n<li>브라우저는 JS를 다운 받음 </li>\n<li>브라우저는 리액트를 실행 </li>\n<li>페이지가 보여지고 상호작용 </li>\n</ul>\n<h5>(2) SSR의 과정</h5>\n<ul>\n<li>서버가 브라우저에게 HTML 응답, 랜더링하기 위한 준비가 되었다고 보냄 </li>\n<li>브라우저가 페이지랜더링, 페이지가 보여지고 브라우저는 JS 다운받음 </li>\n<li>브라우저 리액트 실행 </li>\n<li>페이지 상호작용 가능</li>\n</ul>\n<h5>(3) CSR과 SSR의 차이</h5>\n<ul>\n<li>CSR은 마지막 단계 전까지 화면에 보여지지가 않고 로딩중 / SSR은 미리 페이지가 보여짐</li>\n<li>CSR은 초기로딩속도가 느리긴하지만, 화면전환에 있어서 클라이언트에서 이루어져서 빠른 전환이 가능</li>\n<li>SSR은 초기로딩속도가 빨라서 사용자가 느끼기엔 좋지만, 동작은 하지않음</li>\n<li>화면전환에 있어서 서버에 요청해야하므로 서버에 부담을 줄 수 있음. 서비스마다 사용자의 요구마다 다름</li>\n</ul>\n<h4>(12) FOUC(Flash of Unstyled Content)</h4>\n<ul>\n<li>브라우저로 웹문서에 접근했을때 미처 CSS의 스타일이 모두 적용되지 못한 상태에서 화면이 표시되어 발생하는 화면 깜박임 스타일의 적용 전과 적용 후가 그대로 화면에 노출된 상태로 변경되는 현상</li>\n<li>FOUC를 최소화하기 위해서는 기본적으로 &#x3C;head> 요소안에 CSS를 링크하고, @import의 사용을 자제</li>\n<li>자바스크립트의 선언순서, 위치를 변경 (성능을 위해 &#x3C;/body> 요소 앞에 자바스크립트를 위치시키곤 하는데 이를 &#x3C;head> 안으로 위치를 변경)</li>\n<li>FOUC를 유발하는 구역을 숨겼다가 문서의 스타일이나 스크립트가 모두 적용되면 보여줌</li>\n</ul>\n<h2 id=\"2-운영체제\" style=\"position:relative;\"><a href=\"#2-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C\" aria-label=\"2 운영체제 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2) 운영체제</h2>\n<hr>\n<h4>1) 가비지 컬렉터</h4>\n<h5>(1) 가비지와 가비지 컬렉터</h5>\n<ul>\n<li>Garbage : 정리되지 않은 메모리, 유효하지 않은 객체의 메모리</li>\n<li>Garbage collector (GC) : 프로그램이 사용할 수 있는 메모리 용량이 부족할 때 가비지들을 메모리에서 해제하는 기능</li>\n</ul>\n<h5>(2) 메모리</h5>\n<ul>\n<li>메모리 할당 : 자바스크립트는 값을 선언할 때 자동으로 메모리를 할당한다.</li>\n<li>메모리 사용 : 메모리를 읽고 쓰는 것을 의미. 메모리가 할당된 변수를 사용하면 읽기와 쓰기 작업이 이루어짐</li>\n<li>메모리 해제 : 더 이상 필요하지 않은 메모리를 해제하여 재사용 할 수 있도록 함</li>\n</ul>\n<h5>(3) 레퍼런스 카운팅(Reference Counting)</h5>\n<ul>\n<li>해당 값이 얼마나 많이 참조되었는지 추적</li>\n<li>변수를 선언하고 참조값이 할당되면 레퍼런스 카운트는 1이 됨</li>\n<li>다른 변수가 같은 값을 참조하면 레퍼런스 카운트가 늘어남</li>\n<li>마찬가지로 해당 값을 참조하는 변수에 다른 값을 할당하면 레퍼런스 카운트가 줄어듦</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> objectA <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\t<span class=\"token comment\">// 레퍼런스 카운트 1</span>\n<span class=\"token keyword\">let</span> objectB <span class=\"token operator\">=</span> objectA<span class=\"token punctuation\">;</span> <span class=\"token comment\">// 레퍼런스 카운트 2</span>\n\nobjectA <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 레퍼런스 카운트 1</span>\nobjectB <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 레퍼런스 카운트 0</span></code></pre></div>\n<ul>\n<li>값의 레퍼런스 카운트가 0이 되면 해당 값에 접근할 방법이 없으며 메모리를 회수해도 안전</li>\n<li>순환 참조 문제 : 객체가 두 개일 때 함수 실행이 끝날 때 두 객체는 모두 스코프를 벗어나게 될 것이고, 두 객체는 불필요해지므로 할당된 메모리는 회수되어야 하지만 함수 실행이 끝난 뒤에도 레퍼런스 카운트가 0이 되지 않으므로 두 객체는 계속 존재</li>\n<li>이런 함수를 여러 번 호출하면 메모리를 회수하지 못하고 낭비되는 메모리가 많이 늘어남</li>\n</ul>\n<h5>(4) 마크 앤 스위프(Mark and sweep)</h5>\n<ul>\n<li>메모리 해제 여부를 결정하기 위해 루트(roots, 자바스크립트의 <code class=\"language-text\">window</code> 객체)부터 해당 객체까지 닿을 수 있는지를 판단</li>\n<li>루트부터 시작하여 루트가 참조하는 객체들과 그 객체가 참조하는 또 다른 객체들을 추적</li>\n<li>객체를 추적하면서 닿을 수 있는 객체는 표시(mark) 한 후, 표시가 없는 객체들은 메모리를 해제(sweep)</li>\n</ul>\n<h4>2) Call-by-value, Call-by-reference, Call-by-assignment</h4>\n<h5>(1) call-by-value(cbv):</h5>\n<ul>\n<li>변수의 <em>값</em>을 복사하여 함수의 인자로 전달</li>\n<li>복사된 인자는 함수 내에서만 사용되는 local variable의 특성을 가짐</li>\n<li>함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않음</li>\n</ul>\n<h5>(2) call-by-reference(cbr)</h5>\n<ul>\n<li>변수의 <em>주소값</em>을 복사하여 함수의 인자로 전달</li>\n<li>함수 안에서 값이 인자의 값이 변경된다면 전체 코드에서 해당 변수의 값이 변경</li>\n</ul>\n<h5>(3) call-by-assignment (cba)(python)</h5>\n<ul>\n<li>전달받는 객체에 따라 참조 방식이 결정. </li>\n<li>immutable object : (int, float, tuple)이 함수의 인자로 넘어갈 땐 call-by-value로 전달</li>\n<li>mutable object : (list, dic, set)이 함수의 인자로 넘어갈 땐 call-by-reference로 전달</li>\n<li>list, dic, set이 mutable object 인 이유 : 객체의 크기가 아주 큰 경우 복사 참조만 된다면 메모리 공간이 낭비</li>\n</ul>\n<h4>3) 가상 메모리와 페이지 폴트</h4>\n<h5>(1) 가상 메모리</h5>\n<ul>\n<li>프로그램 실행에 필요한 메모리 용량 전체를 RAM에서 할당받는 것이 아니라, 최소한의 메모리를 RAM에서 할당받아 저장하고 나머지는 HDD (가상 메모리 공간)에 저장하는 것</li>\n<li>요구 페이징 : 페이지 폴트가 발생하면 운영 체제가 가상 메모리에서 해당 페이지를 찾아 물리 메모리의 불필요한 페이지와의 교체를 요구. 그리고 이 과정 동안은 모든 스레드가 대기</li>\n</ul>\n<h5>(3) 페이지 교체 알고리즘</h5>\n<ul>\n<li>요구 페이징이 발생했을 때 교체할 물리 메모리의 페이지를 선정하는 알고리즘</li>\n<li><code class=\"language-text\">FIFO (First In First Out)</code> : 물리 메모리에 적재된지 가장 오래된 페이지를 교체. 페이지의 사용 빈도를 무시하기 때문에 활발하게 사용하는 페이지가 교체될 수 있다는 문제점이 있음. 페이지가 적재된 순서를 Queue에 저장하는 방식을 사용</li>\n<li><code class=\"language-text\">LRU (Least Recently Used)</code> : 가장 오랜 기간 사용되지 않은 페이지를 교체. 많은 운영체제가 사용하는 알고리즘</li>\n<li><code class=\"language-text\">LFU (Least Frequently Used)</code> : 참조 횟수가 가장 적은 페이지를 교체. 만약 교체 대상이 여러 개일 경우에 LRU를 사용LFU는 초기에 한 페이지를 집중적으로 참조하다가 이후에 참조하지 않는 경우에 메모리에 계속 남아있을 수 있음</li>\n<li><code class=\"language-text\">MFU (Most Frequently Used)</code> : LFU와 반대로 참조 횟수가 가장 많은 페이지를 교체하는 알고리즘</li>\n</ul>\n<h5>(4) 메모리 단편화 (Memory Fragmentation)</h5>\n<ul>\n<li>내부 단편화 : 교체된 페이지의 크기 &#x3C; 할당된 공간의 크기</li>\n<li>외부 단편화 :  교체된 페이지의 크기 > 할당된 공간의 크기</li>\n</ul>\n<h5>(5) 페이징과 세그먼테이션</h5>\n<ul>\n<li>메모리 단편화를 해결할 수 있는 기법</li>\n<li>\n<p>페이징 </p>\n<ul>\n<li>페이지가 연속적인 물리 메모리 공간에 들어가야하는 제약을 해결하기 위한 방법</li>\n<li>가상 메모리는 페이지, 물리 메모리는 프레임이라는 고정 크기의 블록으로 나눈 후, 페이지 테이블의 매핑을 통해 1:1 대응</li>\n<li>페이지 단위를 작게하면 내부 단편화(Internal fragmentation) 역시 해결할 수 있지만 페이지에 공간을 할당한 후, 남는 공간이 적어지기 때문에 그 만큼 page mapping 과정이 증가</li>\n</ul>\n</li>\n<li>\n<p>세그멘테이션 </p>\n<ul>\n<li>method, function, object, variables 등 프로그램의 논리적 단위를 바탕으로 서로 다른 크기의 블록으로 나누는 방법</li>\n<li>세그먼트들의 크기가 서로 다르기 때문에 메모리를 페이징 기법처럼 미리 분할해 둘 수 없고, 메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 가상 메모리 관리 기법</li>\n<li>각 세그먼트 별로 길이 값을 가지고 있어 내부 단편화를 해결</li>\n</ul>\n</li>\n</ul>\n<h4>4) 프로세스와 스레드</h4>\n<h5>(1) 프로세스</h5>\n<ul>\n<li><em>실행 중인 프로그램</em>, 운영체제로부터 자원을 할당, 한 프로세스 안에 여러개의 스레드가 생성될 수 있음</li>\n<li>운영체제로부터 프로세서, 주소 공간, 메모리과 같은 시스템 자원을 할당받는 작업의 단위로 실행된 프로그램</li>\n<li>프로세스는 실행될 때 운영 체제로부터 독립된 메모리 영역 (Code, Data, Heap, Stack)을 할당</li>\n<li>다른 프로세스의 자원에는 접근할 수 없음</li>\n</ul>\n<h5>(2) 프로세스 관련 용어</h5>\n<ul>\n<li>PCB : 프로세스 제어 블록, 프로세스에 대한 중요한 정보를 저장</li>\n<li>PC : 프로그램 카운터, 프로세스 실행을 위한 다음 명령의 주소를 표시</li>\n<li>캐시메모리 : 자주 사용되는 데이터가 저장되는 공간으로 CPU의 레지스터와 메모리 사이에서 병목 현상을 완화하는 장치</li>\n</ul>\n<h5>(3) 스레드</h5>\n<ul>\n<li><em>실행 제어만 분리한 것</em>, 프로세스 내에서 동작되는 실행의 단위</li>\n<li>Stack 외에 프로세스가 할당받은 자원 (Code, Data, Heap)을 스레드끼리 공유하면서 실행</li>\n<li>컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드쪽이 빠름</li>\n<li>자원 공유로 인해 문제가 발생할 수 있음</li>\n<li>하나의 프로세스가 실행되면 기본적으로 하나의 메인 스레드가 생성</li>\n</ul>\n<h5>(4) 멀티 프로세스</h5>\n<ul>\n<li>하나의 프로그램을 프로세스 여러 개로 구성하여 Context switching을 통해 실행하는 것</li>\n<li>하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 미치지 않음</li>\n</ul>\n<h5>(5) 멀티 스레드</h5>\n<ul>\n<li>하나의 프로그램을 한 프로세스 내에 여러 개의 스레드로 구성하여 실행하는 것</li>\n<li>하나의 프로세스에서 여러개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화하는 것</li>\n<li>\n<p>장점</p>\n<ul>\n<li>멀티 프로세스에 비해 메모리 자원소모가 줄어듬</li>\n<li>힙 영역을 통해서 스레드간 통신이 가능해서 프로세스간 통신보다 간단</li>\n<li>스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠름</li>\n</ul>\n</li>\n<li>\n<p>단점</p>\n<ul>\n<li>힙 영역에 있는 자원을 사용할 때는 동기화를 해야 함</li>\n<li>동기화를 위해서 락을 과도하게 사용하면 성능이 저하</li>\n<li>하나의 스레드가 비정상적으로 동작하면 다른 스레드도 종료</li>\n</ul>\n</li>\n</ul>\n<h5>(6) Thread-safe</h5>\n<ul>\n<li>두 개 이상의 스레드가 race condition에 들어가거나 같은 객체에 동시에 접근해도 연산결과의 정합성이 보장될 수 있게끔 메모리 가시성이 확보된 상태를 의미</li>\n<li>java.util.concurrent 패키지 하위의 클래스를 사용</li>\n<li>인스턴스 변수를 두지 않음</li>\n<li>Singleton 패턴을 사용(이 때, 일반적으로 구현하는 Singleton Pattern은 Thread-safe 하지 않습니다.)</li>\n<li>동기화(syncronized) 블럭에서 연산을 수행</li>\n</ul>\n<h5>(7) ThreadLocal</h5>\n<ul>\n<li>스레드 내부에서 사용되는 지역변수</li>\n<li>각각의 thread scope 내에서 공유되어 사용될 수 있는 값으로 다른 스레드에서 공유 변수에 접근할 시 발생할 수 있는 동시성 문제의 예방을 위해 만들어짐</li>\n</ul>\n<h5>(8) 컨텍스트 스위칭</h5>\n<ul>\n<li><em>한 Task가 끝날 때까지 기다리는 것이 아니라 여러 작업을 번갈아가며 실행해서 동시에 처리될 수 있도록 하는 방법</em></li>\n<li>프로세서가 멀티 프로세싱을 구성하여 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때, 기존 프로세스의 상태 또는 레지스터 값 (context)을 저장하고 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업. </li>\n<li>인터럽트가 발생하면 현재 프로세스의 상태를 PCB에 저장하고 새로운 프로세스의 상태를 레지스터에 저장하는 방식으로 동작</li>\n<li>CPU는 아무런 일을 하지 않으므로  잦은 컨텍스트 스위칭은 성능저하 원인</li>\n<li>스레드는 캐시메모리나 PCB에 저장해야하는 내용이 적고 비워야 하는 내용도 적기때문에 상대적으로 더 빠른 컨텍스트 스위칭 가능</li>\n<li>멀티 프로세싱을 Computer multitasking을 통해 빠른 속도로 Task를 바꿔 가며 실행하여 실시간 처리에 근사하도록 하는 기술</li>\n</ul>\n<h5>(9) 프로세스 동기화</h5>\n<ul>\n<li>다중 프로세스 환경에서 자원등에 한 프로세스만이 접근가능하도록 하는 것</li>\n<li>프로세스 동기화를 하지 않으면 데이터의 일관성이 깨지기 때문에 연산결과가 잘못 반환될 가능성이 존재</li>\n<li>\n<p>경쟁 상태(Race Condition)</p>\n<ul>\n<li>여러 프로세스나 스레드가 동기화 메커니즘 없이 자원에 접근하려는 상황</li>\n<li>공유된 자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황</li>\n</ul>\n</li>\n<li>\n<p>임계 구역(Critical Section)</p>\n<ul>\n<li>여러 스레드가 동시에 접근해서는 안되는 공유자원에 접근하는 코드 블럭</li>\n<li>한 임계구역에 하나의 스레드 혹은 프로세스만 접근이 가능</li>\n<li>임계 구역에 접근하는 것을 제어하기 위해 세마포어, 뮤텍스와 같은 매커니즘을 사용</li>\n</ul>\n</li>\n<li>\n<p>임계 구역 문제를 해결하기 위한 조건</p>\n<ul>\n<li>상호 배제(Mutual Exclusion): 한 프로세스가 임계구역에서 동작중이면 다른 프로세스는 접근할 수 없다.</li>\n<li>진행(Progress): 임계구역에서 작업중인 프로세스가 없다면 입계구역으로 진입하려는 프로세스를 적절히 선택해서 진입할 수 있도록 합니다.</li>\n<li>유한 대기(Bounded Waiting): 한 프로세스가 임계영역으로 진입을 요청한 후 다른 프로세스는 진입이 유한한 횟수로 제한되어야 합니다. (기아상태 방지)</li>\n</ul>\n</li>\n</ul>\n<h4>6) 동기,  비동기 / 블로킹/논블로킹</h4>\n<h5>(1) 동기 방식</h5>\n<ul>\n<li>메서드 리턴과 결과를 전달받는 시간이 일치하는 명령 실행 방식</li>\n<li>동기 방식은 한 함수가 끝나는 시간과 바로 다음의 함수가 시작하는 시간이 같음</li>\n</ul>\n<h5>(2) 비동기 방식</h5>\n<ul>\n<li>여러 개의 처리가 함께 실행되는 방식</li>\n<li>동기 방식에 비해 단위시간 당 많은 작업을 처리할 수 있음</li>\n<li>CPU나 메모리를 많이 사용하는 작업을 비동기로 처리하게 되면 과부하가 걸릴 수 있고 프로그램의 복잡도도 증가</li>\n</ul>\n<h5>(3) 블로킹 / 논블로킹 방식</h5>\n<ul>\n<li>블로킹 : 대상의 작업이 끝날 때 까지 제어권을 대상이 가지고 있음</li>\n<li>논블로킹 : 대상의 작업 완료여부와 상관없이 새로운 작업을 수행</li>\n</ul>\n<h5>(4) 동기 논블로킹</h5>\n<ul>\n<li>계속해서 polling을 수행하기 때문에 컨텍스트 스위칭이 지속적으로 발생해 지연이 발생</li>\n</ul>\n<h4>7) RISC와 CISC</h4>\n<h5>(1) RISC(Reduced Instruction Set Computer)</h5>\n<ul>\n<li>축소 명령어 세트 컴퓨터(명령어의 개수가 적은 것)</li>\n<li>핵심적인 명령어를 기반으로 최소한의 명령어 세트를 구성함으로써 파이프라이닝 이라는 획기적인 기술을 도입할 수 있어 빠른 동작 속도와 하드웨어의 단순화와 효율화를 시킬 수 있었고, 가격 경쟁력에서도 우위를 점함</li>\n<li>\n<p>특징</p>\n<ul>\n<li>적은 명령어 세트</li>\n<li>간단한 명령어로 빠른 실행속도</li>\n<li>고정적인 명령어 길이</li>\n<li>워드, 데이터 버스 크기가 동일하고 실행 사이클도 모두 동일</li>\n<li>회로 구성이 단순</li>\n<li>프로그램을 구성할 때 상대적으로 많은 명령어가 필요</li>\n<li>파이프 라이닝을 사용함</li>\n<li>명령어 개수가 적어서 컴파일러가 단순하게 구현</li>\n</ul>\n</li>\n</ul>\n<h5>(2) CISC(Complex Instruction Set Computer)</h5>\n<ul>\n<li>연산을 처리하는 복잡한 명령어(명령어가 할 수 있는 일의 양이 RISC 대비하여 많다는 것)들을 수백개 이상 탑재하고 있는 프로세서</li>\n<li>CISC는 명령어 개수 증가에 따라 프로세서 내부구조가 매우 복잡해지고, 고속으로 작동되는 프로세서를 만들기 힘들어짐</li>\n<li>명령어마다 길이가 다르고  실행에 필요한 사이클 수도 다르기 때문에 파이프 라이닝설계가 어려움</li>\n<li>\n<p>특징</p>\n<ul>\n<li>명령어의 개수가 많음</li>\n<li>명령어 길이가 다양하며, 실행 사이클도 명령어 마다 다름</li>\n<li>회로구성이 복잡함</li>\n<li>프로그램을 만들 때 적은 명령어로 구현 가능</li>\n<li>다양한 명령어를 사용하기 때문에 컴파일러가 복잡</li>\n</ul>\n</li>\n<li>\n<p>사용 이유</p>\n<ul>\n<li>아직 너무도 많은 프로세서가 CISC 모델로 구축되어 있고 이것을 전부 바꾸는 것은 비용이 큼</li>\n<li>CISC 성능의 취약점은 RISC와 같은 파이프라인을 일부 사용하고 집적도는 더 높임으로써 부분적으로 보완이 가능</li>\n<li>RISC에 비해 호환성이 좋음</li>\n</ul>\n</li>\n</ul>\n<h4>7) 교착상태(Deadlock)</h4>\n<ul>\n<li>서로 다른 프로세스가 서로의 자원을 요구하며 무한정 기다리는 현상</li>\n</ul>\n<h5>(1) 상호배제 (Mutual exclusion)</h5>\n<ul>\n<li>한번에 한 프로세스만이 자원을 점유할 수 있음</li>\n<li>하나의 프로세스가 자원을 사용할 경우 다른 프로세스는 그 자원을 사용할 수 없는 것</li>\n</ul>\n<h5>(2) 점유와 대기, 보유 및 대기(Hold and wait)</h5>\n<ul>\n<li>프로세스가 이미 자원을 점유하는 상태에서 다른 자원을 무한정 기다림</li>\n<li>프로세스가 자신이 가질 수 있는 자원은 가지고 있으면서 다른 자원이 오기를 기다리고 있는 것</li>\n</ul>\n<h5>(3) 비선점(No Preemption)</h5>\n<ul>\n<li>프로세스가 어떤 자원의 점유를 끝낼 때까지 그 자원을 뺏을 수 없음</li>\n<li>CPU 할당뿐만 아니라 모든 자원에 의해서 비선점이 된다는 것</li>\n<li>임의의 프로세스가 자원을 할당 받은 상태에서 다른 프로세스는 이 자원을 뺏어서 사용할 수 없는 형태</li>\n</ul>\n<h5>(4) 환형대기(Circular wait)</h5>\n<ul>\n<li>각 프로세스들이 원형으로 구성되어 순환적으로 자원을 요구</li>\n<li>선형이 아니고 원형을 이루게 되어 프로세스의 자원 할당에서 첫 번째 프로세스와 마지막 프로세스의 자원할당이 겹치게 되어 원형에 있는 모든 프로세스가 자원 할당을 받고자 기다리는 형태가 만들어지는 것</li>\n</ul>\n<h5>(2) 교착 상태 해결방법</h5>\n<ul>\n<li>예방 : 4가지 조건 중 하나라도 만족되지 않도록 함</li>\n<li>회피 : 알고리즘을 데드락이 발생하지 않도록 함</li>\n<li>회복 : 교착상태가 발생할 때 해결</li>\n<li>무시 : 회복과정의 성능저하가 심하다면 그냥 무시</li>\n</ul>\n<h5>(3) 기아상태(Starvation)</h5>\n<ul>\n<li>여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스가 영원히 자원 할당이 되지 않는 경우</li>\n<li>우선순위를 수시로 변경하거나 오래 기다린 프로세스의 우선순위를 높여주거나, Queue를 사용</li>\n</ul>\n<h4>(3) 세마포어와 뮤텍스</h4>\n<ul>\n<li>뮤텍스와 세마포어 : 다수의 프로세스나 스레드가 공유 자원에 동시에 접근하는 것을 제어하는 것</li>\n</ul>\n<h5>(1) 세마포어</h5>\n<ul>\n<li><em>여러개의 프로세스가 접근 가능한 공유자원을 관리하는 방식</em></li>\n<li>뮤텍스가 될 수 있음</li>\n<li>다른 프로세스가 세마포어를 해제할 수 있음</li>\n<li>현재 공유 자원에 접근할 수 있는 스레드, 프로세스의 수를 나타내는 값을 두는 상호 배제 기법. </li>\n<li>그 값만큼 동시에 스레드가 해당 공유 자원에 접근 가능</li>\n</ul>\n<h5>(2) 뮤텍스</h5>\n<ul>\n<li><em>한 번에 한 개의 프로세스만 접근 가능하도록 관리하는 방식</em></li>\n<li>뮤텍스는 세마포어가 될 수 없음</li>\n<li>락을 획득한 프로세스만 락을 반환할 수 있음</li>\n<li>한 스레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제 기법</li>\n<li>한 스레드가 임계 영역에 들어갈 때 lock을 걸어 다른 스레드가 접근하지 못하도록 하고 임계 영역에서 나올 때 unlock</li>\n</ul>\n<h4>(4) 가상 메모리</h4>\n<ul>\n<li>Swap 영역. 실제 메모리에서 공간이 부족한 경우 보조 기억 장치(auxiliary storage, secondary storage)에서 임시로 사용하는 영역</li>\n<li>OS 에서 관리하며 프로세스는 이것이 실제 메모리인지 Swap 영역인지 모름</li>\n<li>실제 메모리가 아니기 때문에 지연시간이 많이 발생하며 가급적이면 swap메모리를 사용하지 않도록 설계하는 것이 좋고 만약 계속해서 사용하는 양이 증가한다면 메모리 누수 의심</li>\n</ul>\n<h4>(5) 캐시의 지역성</h4>\n<ul>\n<li>시간 지역성 : 최근에 접근한 데이터에 다시 접근하는 경향</li>\n<li>공간 지역성 : 최근 접근한 데이터의 주변 공간에 다시 접근하는 경향</li>\n</ul>\n<h2 id=\"3-데이터베이스\" style=\"position:relative;\"><a href=\"#3-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4\" aria-label=\"3 데이터베이스 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3) 데이터베이스</h2>\n<hr>\n<h4>(1) 데이터베이스 인덱스</h4>\n<ul>\n<li>검색성능을 향상시키기 위함</li>\n<li>검색성능을 실질적으로 향상시키기 위해서는 해당 쿼리가 index를 사용하는지, 카디널리티, Selectivity 같은 요소들이 고려된 인덱스가 생성되어야 함</li>\n<li><code class=\"language-text\">장점</code> : 빠른 검색 성능</li>\n<li><code class=\"language-text\">단점</code> : 인덱스를 구성하는 비용 즉, 추가, 수정, 삭제 연산시에 인덱스를 형성하기 위한 추가적인 연산이 수행</li>\n</ul>\n<h4>(2) 트랜잭션</h4>\n<ul>\n<li><em>데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위</em></li>\n<li>트랜잭션에는 여러개의 연산이 수행될 수 있음</li>\n<li>트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공</li>\n</ul>\n<h4>(3) 트랜잭션의 특성(ACID)</h4>\n<h5>(1) Atomicity (원자성)</h5>\n<ul>\n<li><em>트랜잭션과 관련된 일은 모두 실행 혹은 모두 실행되지 않음</em></li>\n<li>Transaction은 최소 작업 단위로 더이상 나눌 수 없음</li>\n<li>ex) 송금 transaction은 출금(A 계좌로 부터)과 입금(B 계좌로)이라는 두 가지 작업을 수행하고 있음, 하지만 이는 하나의 transaction으로 묶여있기 때문에 위의 두 작업은 나눠질 수 없음</li>\n<li>출금만 실행되고 입금이 수행되지 않는다면 이는 transaction이라 부를 수 없음</li>\n<li>출금만 실행되고 입금이 실행되지 않는다면 돈이 증발해버리는 심각한 문제가 발생</li>\n<li>이러한 문제를 방지하기 위해 출금과 입금을 하나의 transaction으로 정의하고 입금이 실행되지 않으면 출금 또한 취소해버림으로Tj(rollback) 출금과 입금 과정을 마치 하나의 작업처럼 실행</li>\n</ul>\n<h5>(2) Consistency(일관성)</h5>\n<ul>\n<li><em>트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지</em>. </li>\n<li>일관성은 특정한 조건을 두고, 그 조건을 만족하는지를 확인하는 방식으로 검사</li>\n<li>일관성 : DBMS에서 제공하는 제약조건을 어기지 않고 데이터의 논리적 오류가 없음을 의미</li>\n<li>ex) 송금 예제에서, A가 만원을 이체했는데 B에서 오천원만 받았다면 이는 논리적 오류</li>\n</ul>\n<h5>(3) Isolation(독립성)</h5>\n<ul>\n<li><em>트랜잭션을 수행하는 도중에 다른 연산작업이 끼어들지 못하도록 함</em></li>\n<li>임계영역을 두는 것으로 달성할 수 있음</li>\n<li>ex ) A 계좌에서 B계좌로 이체하는 transaction이 실행되는 도중 A 계좌의 모든 잔액을 출금하는 transaction이 실행되었다고 가정</li>\n<li>만약 첫 번째 transaction이 A의 계좌에서 이체 금액을 출금한 상태에서 두 번째 transaction이 잔액을 조회하고 이를 출금하려고한다면 문제가 발생할 수 있음</li>\n<li>아직 첫 번째 transaction은 완료된 상태가 아니기 때문에 만약 도중에 문제가 생겨 이체가 취소된다면 두 번째 transaction이 조회한 금액은 잘못된 금액(이체 금액이 빠져있는)이기 때문</li>\n<li>table, 혹은 해당 row에 lock을 걸어버리는 것이지만 이러한 방법은 동시성을 떨어뜨려 성능에 악영향을 미칠 수 있음</li>\n</ul>\n<h5>(5) Durability (지속성)</h5>\n<ul>\n<li><em>성공적으로 트랜잭션이 수행되었다면, 그 결과는 완전히 반영</em> </li>\n<li>완전히 반영되면 로그를 남기게 되는데 이 로그를 이용해서 트랜잭션 수행전 상태로 되돌릴 수 있어야 함</li>\n<li>트랜잭션은 로그저장이 완료된 시점에서 종료가 되어야 함</li>\n</ul>\n<h5>(2) 트랜잭션 격리 수준(Transaction Isolation Levels)</h5>\n<ul>\n<li>고립도와 성능의 트레이드 오프를 조절</li>\n<li><code class=\"language-text\">READ UNCOMMITTED</code> : 다른 트랜잭션에서 커밋되지 않은 내용도 참조</li>\n<li><code class=\"language-text\">READ COMMITTED</code> : 다른 트랜잭션에서 커밋된 내용만 참조</li>\n<li><code class=\"language-text\">REPEATABLE READ</code> : 트랜잭션에 진입하기 이전에 커밋된 내용만 참조</li>\n<li><code class=\"language-text\">SERIALIZABLE</code>: 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 함</li>\n<li>정규화 : 데이터의 중복방지, 무결성을 충족시키기 위해 데이터베이스를 설계하는 것</li>\n</ul>\n<h4>(3) RDBMS / NOSQL</h4>\n<h5>(1) RDBMS</h5>\n<ul>\n<li><em>데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스</em></li>\n<li>수정 (update)에 좋음</li>\n<li>SQL을 사용해 데이터의 저장, 질의, 수정, 삭제를 할 수 있으며 데이터를 효율적으로 보관하는 것을 목적으로 하고 구조화가 중요</li>\n<li>\n<p>명확한 데이터 구조를 보장, 중복을 피할 수 있음. 중복 데이터가 존재하지 않아 저장 공간을 절약할 수 있으며, 데이터 수정 (update)이 용이</p>\n<ul>\n<li>테이블 간의 관계를 통해서 큰 규모의 데이터를 여러 개의 테이블 (ex. user, item, buying)에 분산 저장 가능. </li>\n<li>분산 저장을 통해 보안을 철저히 하고, 테이블를 구조적으로 도식화하여 효율적으로 관리</li>\n<li>테이블 관계가 복잡해 질수록 JOIN이 많은 SQL 쿼리가 만들어 질 수 있음</li>\n<li>데이터 수정 (update)가 자주 발생하는 시스템이거나, 명확한 스키마가 중요한 경우</li>\n</ul>\n</li>\n</ul>\n<h5>(2) NOSQL</h5>\n<ul>\n<li><em>자유로운 형태로 데이터를 저장</em></li>\n<li>쓰기 (write)와 읽기 (read)에 좋음</li>\n<li>수평확장을 할 수 있고 분산처리를 지원</li>\n<li>key-value store, bigtable, dynamo, document db, graph db</li>\n<li>\n<p>스키마없이 유연하게 데이터를 저장/관리할 수 있는 데이터베이스</p>\n<ul>\n<li>데이터 중복이 허용되기에 수정 (update)을 위해서는 중복으로 저장된 데이터를 검색하여 모두 수정해야하는 번거로움이 있으며, 엄격한 스키마가 없다보니 데이터에 대한 규격화된 결과 값을 얻을 수 없음</li>\n<li>정확한 데이터 구조를 알지 못하거나, 데이터 수정 (update)보다는 쓰기 (write)와 읽기 (read)가 더 자주 발생하는 경우 NoSQL이 적합</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"5-소프트웨어-공학\" style=\"position:relative;\"><a href=\"#5-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B3%B5%ED%95%99\" aria-label=\"5 소프트웨어 공학 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5) 소프트웨어 공학</h2>\n<hr>\n<h4>1) 절차 지향과 객체 지향</h4>\n<h5>(1) 절차 지향 프로그래밍 (Procedural Programming)</h5>\n<ul>\n<li>물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시되는 프로그래밍 기법</li>\n<li>C가 대표적인 절차 지향 프로그래밍 언어</li>\n<li>컴퓨터의 처리구조와 유사해 실행속도가 빠르지만 디버깅이 어려움</li>\n</ul>\n<h5>(2) 객체 지향 프로그래밍 (Object Oriented Programming)</h5>\n<ul>\n<li>실제 세계를 표방하여 데이터와 절차를 하나의 덩어리로 처리하는 프로그래밍 기법</li>\n<li>Java, Python, C++이 대표적인 객체 지향 프로그래밍 언어</li>\n<li>객체 지향 프로그래밍은 기존에 짜여진 코드를 재사용하기 용이하며 디버깅이 쉬움</li>\n<li>단, 처리 속도가 느리며 설계에 많은 노하우와 시간이 필요</li>\n</ul>\n<h5>(3) 객체 지향 프로그래밍 특징</h5>\n<ul>\n<li>추상화: 객체가 가진 공통의 속성이나 기능을 묶어 명시적인 이름을 부여하는 것</li>\n<li>캡슐화: 관련된 데이터와 코드를 하나로 묶은 것으로 데이터를 감추고 외부와의 상호작용은 메소드를 통하는 방법</li>\n<li>상속: 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 것으로, 기존 코드를 재활용하는 것</li>\n<li>다형성 (Polymorphism): 같은 코드로 다른 행위를 하는 것(Overriding과 Overloading) </li>\n</ul>\n<h4>2) 오버로딩과 오버라이딩</h4>\n<ul>\n<li>객체 지향 프로그래밍의 다형성을 지원하는 방법</li>\n</ul>\n<h5>(1) 오버라이딩 (Overriding)</h5>\n<ul>\n<li>부모 클래스가 가지고 있는 메소드를 자식 클래스가 재정의해서 사용. </li>\n<li>즉, 메소드의 이름/매개변수/반환형이 같은 상속 받은 메소드를 덮어쓰는 것</li>\n<li>부모 클래스의 메소드는 무시하고 자식 클래스가 필요로하는 메소드를 추가하여 사용하는 것</li>\n</ul>\n<h5>(2) 오버로딩 (Overloading)</h5>\n<ul>\n<li>같은 이름의 메소드 (함수)를 여러개 정의하되, 매개 변수의 유형과 개수를 달리하여 다양한 유형의 호출에 응답하는 것</li>\n</ul>\n<h4>3) 점진적 향상법 / 우아한 성능저하법</h4>\n<h5>(1) 점진적 향상법 (Progressive enhancement)</h5>\n<ul>\n<li>많은 테스트를 통해 말그대로 기능을 점진적으로 향상시키는 것</li>\n<li>기초부터 차곡차곡 쌓아서 발전해 나가는 방법. 노력과 시간이 필요</li>\n<li>ex ) 웹 페이지를 구성할 때  HTML로 마크업을 구성 / CSS로 스타일을 입힘 / JS로 사용자 경험을 향상</li>\n</ul>\n<h5>(5) 우아한 성능 저하법 (graceful degradation)</h5>\n<ul>\n<li>최신 기술을 기반 또는 최신 기기에서 동작하는 기능을 만들고 나서, 오래된 기술 또는 오래된 기기에서 동작하게 하기 위해 유사한 기능을 만들어 동작하게 하는 것 </li>\n<li>사용자들의 기기를 위해 별도의 버전을 만들어 놓는 것. </li>\n<li>ex) 사용자의 브라우저가 javascript를 지원하지 않을 때 js를 지원하지 않는 기기를 위해 <noscript> 태그를 사용하여 사용자에게 “javascript가 지원되는 브라우저를 사용해 주세요!” 와 같은 알람을 띄워주는 것</li>\n</ul>\n<h4>4) 디자인 패턴</h4>\n<h5>(1) 싱글톤 (Signleton)</h5>\n<ul>\n<li>코드 내 어디서든, 오직 하나의 인스턴스만 사용할 수 있도록 객체를 생성하는 방법</li>\n<li>객체는 여러 번 생성되지 않고 최초 하나의(Single) 인스턴스만 생성하고 이후에는 이 인스턴스를 참조</li>\n<li>전역적으로 하나의 인스턴스만 사용, 참조해야하는 경우에 사용</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"># 보통<span class=\"token punctuation\">,</span> 싱글톤 객체의 <span class=\"token punctuation\">.</span><span class=\"token function\">get_instance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> 로 인스턴스를 받아온다<span class=\"token punctuation\">.</span>\nsingleton_1 <span class=\"token operator\">=</span> <span class=\"token class-name\">Singleton</span><span class=\"token punctuation\">.</span><span class=\"token function\">get_instance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nsingleton_2 <span class=\"token operator\">=</span> <span class=\"token class-name\">Singleton</span><span class=\"token punctuation\">.</span><span class=\"token function\">get_instance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n# 이렇게 받아온 두 인스턴스는 동일한 인스턴스다<span class=\"token punctuation\">.</span>\nsingleton_1 <span class=\"token operator\">==</span> singleton_2  # <span class=\"token class-name\">True</span></code></pre></div>\n<ul>\n<li>활용 예시 : DB 커넥션과 Pool 을 담당하는 인스턴스, 시스템 전역의 로깅을 담당하는 로거</li>\n</ul>\n<h5>(2) 프로토타입 (Prototype)</h5>\n<ul>\n<li>기존의 인스턴스를 그대로 복제(clone) 하여 새로운 객체를 생성하는 방법</li>\n<li>하나의 인스턴스를 사용하는 싱글톤과는 반대되는 개념</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"># 보통<span class=\"token punctuation\">,</span> 프로토타입 객체의 <span class=\"token punctuation\">.</span><span class=\"token function\">clone</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> 으로 인스턴스를 복사한다<span class=\"token punctuation\">.</span>\noriginal <span class=\"token operator\">=</span> <span class=\"token class-name\">Prototype</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nprototype <span class=\"token operator\">=</span> original<span class=\"token punctuation\">.</span><span class=\"token function\">clone</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n# 이렇게 받아온 두 인스턴스는 동일한 객체는 아니지만<span class=\"token punctuation\">,</span> 내부 데이터는 같다<span class=\"token punctuation\">.</span>\noriginal <span class=\"token operator\">==</span> prototype  # <span class=\"token class-name\">False</span>\noriginal<span class=\"token punctuation\">.</span>data <span class=\"token operator\">==</span> prototype<span class=\"token punctuation\">.</span>data  # <span class=\"token class-name\">True</span></code></pre></div>\n<ul>\n<li>활용 예시 : DB 로부터 얻어온 데이터 인스턴스를 동일하게 하나 더 만들어야 하는 경우</li>\n</ul>\n<h5>(3) 팩토리 (Factory)</h5>\n<ul>\n<li>인스턴스를 만들어내는 공장(Factory) 를 통해 객체를 생성하는 방법</li>\n<li>인스턴스를 직접 생성해내지 않고, 공장에서 제공하는 메소드를 통해 생성</li>\n<li>사용자는 객체를 생성하고 싶을 때, 공장에서 제공하는 메소드만 알고 있으면 되고,  구체적으로 인스턴스가 어떻게 생성되는지 신경 쓰지 않음</li>\n<li>한 집합 내에 있는 클래스들의 생성을 한 곳에서 처리하고 싶을 때</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"># 보통<span class=\"token punctuation\">,</span> <span class=\"token class-name\">Factory</span> 객체의 `get` 메쏘드의 파라미터로 생성할 객체의 타입을 넘겨준다<span class=\"token punctuation\">.</span>\nsamsung_keyboard <span class=\"token operator\">=</span> <span class=\"token class-name\">KeyboardFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">get_keyboard</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"samsung\"</span><span class=\"token punctuation\">)</span>\nlg_keyboard <span class=\"token operator\">=</span> <span class=\"token class-name\">KeyboardFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">get_keyboard</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"lg\"</span><span class=\"token punctuation\">)</span>\n\n# 생성된 객체는 다음과 같이 구체적인 클래스 인스턴스다<span class=\"token punctuation\">.</span>\nsamsung_keyboard  # <span class=\"token class-name\">SamsungKeyboard</span>\nlg_keyboard  # <span class=\"token class-name\">LgKeyboard</span></code></pre></div>\n<ul>\n<li>활용 예시 : 삼성, LG 키보드를 만드는 키보드 팩토리</li>\n</ul>\n<h5>(4) 추상 팩토리 (Abstract Factory)</h5>\n<ul>\n<li>공장을 만들어내는 상위 공장을 먼저 정의하고 여기서 구체적인 공장을 만든 후, 이 공장에서 객체를 생성하는 방법</li>\n<li>팩토리의 위에 이 팩토리를 만드는 팩토리가 있음</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># 키보드 팩토리의 팩토리(추상 팩토리)를 통해 키보드 팩토리를 얻는다.\nCommonKeyboardFactory = AbstarctKeyboardFactory.get_keyboard_factory(&quot;common&quot;)\n\n# 이후는 팩토리 패턴과 동일하다.\nsamsung_common_keyboard = CommonKeyboardFactory.get_keyboard(&quot;samsung&quot;)\nlg_common_keyboard = CommonKeyboardFactory.get_keyboard(&quot;lg&quot;)\n\nsamsung_keyboard  # SamsungCommonKeyboard\nlg_keyboard  # LgCommonKeyboard</code></pre></div>\n<ul>\n<li>활용 예시 : 기계식 키보드 공장와 일반 키보드공장을 만드는 키보드 추상 팩토리</li>\n</ul>\n<h5>(5) 빌더 (Builder)</h5>\n<ul>\n<li>객체를 생성할 때 필요한 파라미터가 많은 경우, 각 파라미터가 무엇을 의미하는지 알기 힘들 수 있음</li>\n<li>빌더라는 형태를 통해 파라미터 의미를 명확히 하여 생성할 수 있음</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"># 빌더 패턴 사용 전 <span class=\"token punctuation\">(</span>경우 <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n<span class=\"token class-name\">WebBrowser</span> browser <span class=\"token operator\">=</span> <span class=\"token class-name\">WebBrowser</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">True</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">FlashPlugin</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">True</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\n# 사용 후\n<span class=\"token class-name\">WebBrowser</span> browser <span class=\"token operator\">=</span> <span class=\"token class-name\">BrowserBuilder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n    <span class=\"token function\">with_ssl</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">True</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n    <span class=\"token function\">with_flash_plugin</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n    <span class=\"token function\">with_cookie_support</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n    <span class=\"token function\">set_timeout</span><span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>\n    <span class=\"token function\">build</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li>활용 예시 : 파라미터가 너무 많아서 의미를 파악하기 힘들 때</li>\n</ul>\n<h2 id=\"6-보안\" style=\"position:relative;\"><a href=\"#6-%EB%B3%B4%EC%95%88\" aria-label=\"6 보안 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6) 보안</h2>\n<h4>1) 로컬 스토리지, 세션 스토리지, 쿠키</h4>\n<h5>(1) 로컬 스토리지(LocalStorage)</h5>\n<ul>\n<li>유통 기한 없이 저장할 수 있는 데이터 공간</li>\n<li>자바스크립트 또는 브라우저 캐시 삭제 등을 통해서만 데이터 삭제 가능</li>\n<li>SessionStorage 와 Cookie 에 비해 저장 공간이 큼.</li>\n<li>클라이언트 사이드에서만 저장 가능함</li>\n</ul>\n<h5>(2) 세션 스토리지(SessionStorage)</h5>\n<ul>\n<li>한 세션에만 저장되는 데이터로 브라우저/탭/앱을 껐을 때 데이터가 사라짐</li>\n<li>서버로 데이터 이전은 불가능</li>\n<li>쿠키보다 최소 5MB 더 큰 저장 공간 확보 가능</li>\n<li>클라이언트 사이드에서만 저장 가능</li>\n</ul>\n<h5>(3) 쿠키(Cookie)</h5>\n<ul>\n<li>다음에 이어지는 요청과 함께 서버로 보내지는 데이터를 저장</li>\n<li>보통 서버에서 데이터 유통기한을 세팅하고 관리</li>\n<li>쿠키는 4KB 이하의 아주 작은 데이터를 보관</li>\n<li>쿠키는 클라이언트에서도 읽을 수 있지만, 보통 서버 사이드에서 읽는 데이터</li>\n<li>보안을 위해 httpOnly 플래그를 true 로 설정하여 클라이언트에서 쿠키 접근을 방지</li>\n</ul>\n<h5>(4) 사용 예시</h5>\n<ul>\n<li>로컬 스토리지 : 자동 로그인</li>\n<li>세션 스토리지 : 입력 폼 정보, 비로그인 장바구니 </li>\n<li>쿠키 : 다시 보지 않음 팝업 창 </li>\n</ul>\n<h5>(5) 가져오기</h5>\n<ul>\n<li>\n<p>로컬 스토리지</p>\n<ul>\n<li>localStorage.A (Key == A)</li>\n<li>localStorage.getItem(“A”)</li>\n</ul>\n</li>\n<li>\n<p>세션 스토리지</p>\n<ul>\n<li>sessionStorage.A (Key == A)</li>\n<li>sessionStorage.getItem(“A”)</li>\n</ul>\n</li>\n<li>\n<p>쿠키</p>\n<ul>\n<li>getCookie(“A”) (Key == A)</li>\n</ul>\n</li>\n</ul>\n<h5>(6) 세팅하기</h5>\n<ul>\n<li>\n<p>로컬 스토리지</p>\n<ul>\n<li>localStorage.A = 1 (Key == A, Value = 1)</li>\n<li>localStorage.setItem(“A”, 1)</li>\n</ul>\n</li>\n<li>\n<p>세션 스토리지</p>\n<ul>\n<li>sessionStorage.A = 1 (Key == A, Value = 1)</li>\n<li>sessionStorage.setItem(“A”, 1)</li>\n</ul>\n</li>\n<li>\n<p>쿠키</p>\n<ul>\n<li>setCookie(“A”, 1, 7) (Key == A, Value == 1, 유효기간 == 7초)</li>\n</ul>\n</li>\n</ul>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#cs-%EA%B4%80%EB%A0%A8-%EC%A7%80%EC%8B%9D\">CS 관련 지식</a></p>\n<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC\">1) 네트워크</a></p>\n<ul>\n<li>\n<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-long-polling%EA%B3%BC-websocket-server-sent-event\">2) Long-Polling과 Websocket, Server-Sent Event</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-polling\">(1) Polling</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-long-polling\">(2) Long Polling</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-streaming\">(3) Streaming</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-websocket\">(4) WebSocket</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-tcp%EC%99%80-udp\">2) TCP와 UDP</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-tcp-transmission-control-protocol\">(1) TCP (Transmission Control Protocol)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-udp-user-datagram-protocol\">(2) UDP (User Datagram Protocol)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-tcp-3-4-way-handshake\">(3) TCP 3, 4 way handshake</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-tcp-4way-handshake\">(4) TCP 4way handshake</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-http%EC%99%80-https\">4) HTTP와 HTTPS</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-http\">(1) HTTP</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-https\">(2) HTTPS</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EC%95%94%ED%98%B8%ED%99%94\">(3) 암호화</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-get%EA%B3%BC-post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90\">6) GET과 POST의 차이점</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-get\">(1) GET</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-post\">(2) POST</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#7-http-%EB%A9%94%EC%84%9C%EB%93%9C\">7) HTTP 메서드</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-get-1\">1) GET</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-post-1\">2) POST</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-put\">3) PUT</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-delete\">4) DELETE</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-patch\">5) PATCH</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#8-restful\">8) RESTful</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%9E%A5%EC%A0%90\">(1) 장점</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EB%8B%A8%EC%A0%90\">(2) 단점</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-hateoas\">(3) HATEOAS</a></li>\n</ul>\n</li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#9-cors\">9) CORS</a></li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#10-osi-7-layer\">10) OSI 7 Layer</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%AC%BC%EB%A6%AC-%EA%B3%84%EC%B8%B5physical-layer\">(1) 물리 계층(Physical layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%A7%81%ED%81%AC-%EA%B3%84%EC%B8%B5datalink-layer\">(2) 데이터 링크 계층(DataLink layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5network-layer\">(3) 네트워크 계층(Network layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EC%A0%84%EC%86%A1-%EA%B3%84%EC%B8%B5-transport-layer\">(4) 전송 계층 (Transport layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EC%84%B8%EC%85%98-%EA%B3%84%EC%B8%B5session-layer\">(5) 세션 계층(Session layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-%ED%91%9C%ED%98%84-%EA%B3%84%EC%B8%B5presentation-layer\">(6) 표현 계층(Presentation layer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#7-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5application-layer\">(7) 응용 계층(Application layer)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#11-csr--ssr\">(11) CSR / SSR</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-csr%EC%9D%98-%EA%B3%BC%EC%A0%95\">(1) CSR의 과정</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-ssr%EC%9D%98-%EA%B3%BC%EC%A0%95\">(2) SSR의 과정</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-csr%EA%B3%BC-ssr%EC%9D%98-%EC%B0%A8%EC%9D%B4\">(3) CSR과 SSR의 차이</a></li>\n</ul>\n</li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#12-foucflash-of-unstyled-content\">(12) FOUC(Flash of Unstyled Content)</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C\">2) 운영체제</a></p>\n<ul>\n<li>\n<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0\">1) 가비지 컬렉터</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EA%B0%80%EB%B9%84%EC%A7%80%EC%99%80-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0\">(1) 가비지와 가비지 컬렉터</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EB%A9%94%EB%AA%A8%EB%A6%AC\">(2) 메모리</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4-%EC%B9%B4%EC%9A%B4%ED%8C%85reference-counting\">(3) 레퍼런스 카운팅(Reference Counting)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EB%A7%88%ED%81%AC-%EC%95%A4-%EC%8A%A4%EC%9C%84%ED%94%84mark-and-sweep\">(4) 마크 앤 스위프(Mark and sweep)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-call-by-value-call-by-reference-call-by-assignment\">2) Call-by-value, Call-by-reference, Call-by-assignment</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-call-by-valuecbv\">(1) call-by-value(cbv):</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-call-by-referencecbr\">(2) call-by-reference(cbr)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-call-by-assignment-cbapython\">(3) call-by-assignment (cba)(python)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%99%80-%ED%8E%98%EC%9D%B4%EC%A7%80-%ED%8F%B4%ED%8A%B8\">3) 가상 메모리와 페이지 폴트</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC\">(1) 가상 메모리</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98\">(3) 페이지 교체 알고리즘</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%8B%A8%ED%8E%B8%ED%99%94-memory-fragmentation\">(4) 메모리 단편화 (Memory Fragmentation)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%ED%8E%98%EC%9D%B4%EC%A7%95%EA%B3%BC-%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%85%8C%EC%9D%B4%EC%85%98\">(5) 페이징과 세그먼테이션</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C\">4) 프로세스와 스레드</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4\">(1) 프로세스</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A0%A8-%EC%9A%A9%EC%96%B4\">(2) 프로세스 관련 용어</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EC%8A%A4%EB%A0%88%EB%93%9C\">(3) 스레드</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4\">(4) 멀티 프로세스</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C\">(5) 멀티 스레드</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-thread-safe\">(6) Thread-safe</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#7-threadlocal\">(7) ThreadLocal</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#8-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%8A%A4%EC%9C%84%EC%B9%AD\">(8) 컨텍스트 스위칭</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#9-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%8F%99%EA%B8%B0%ED%99%94\">(9) 프로세스 동기화</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-%EB%8F%99%EA%B8%B0--%EB%B9%84%EB%8F%99%EA%B8%B0--%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9\">6) 동기,  비동기 / 블로킹/논블로킹</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D\">(1) 동기 방식</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D\">(2) 비동기 방식</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EB%B8%94%EB%A1%9C%ED%82%B9--%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EB%B0%A9%EC%8B%9D\">(3) 블로킹 / 논블로킹 방식</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EB%8F%99%EA%B8%B0-%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9\">(4) 동기 논블로킹</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#7-risc%EC%99%80-cisc\">7) RISC와 CISC</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-riscreduced-instruction-set-computer\">(1) RISC(Reduced Instruction Set Computer)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-cisccomplex-instruction-set-computer\">(2) CISC(Complex Instruction Set Computer)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#7-%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9Cdeadlock\">7) 교착상태(Deadlock)</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%83%81%ED%98%B8%EB%B0%B0%EC%A0%9C-mutual-exclusion\">(1) 상호배제 (Mutual exclusion)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EC%A0%90%EC%9C%A0%EC%99%80-%EB%8C%80%EA%B8%B0-%EB%B3%B4%EC%9C%A0-%EB%B0%8F-%EB%8C%80%EA%B8%B0hold-and-wait\">(2) 점유와 대기, 보유 및 대기(Hold and wait)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EB%B9%84%EC%84%A0%EC%A0%90no-preemption\">(3) 비선점(No Preemption)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%ED%99%98%ED%98%95%EB%8C%80%EA%B8%B0circular-wait\">(4) 환형대기(Circular wait)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EA%B5%90%EC%B0%A9-%EC%83%81%ED%83%9C-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95\">(2) 교착 상태 해결방법</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EA%B8%B0%EC%95%84%EC%83%81%ED%83%9Cstarvation\">(3) 기아상태(Starvation)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4%EC%99%80-%EB%AE%A4%ED%85%8D%EC%8A%A4\">(3) 세마포어와 뮤텍스</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4\">(1) 세마포어</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EB%AE%A4%ED%85%8D%EC%8A%A4\">(2) 뮤텍스</a></li>\n</ul>\n</li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC\">(4) 가상 메모리</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EC%BA%90%EC%8B%9C%EC%9D%98-%EC%A7%80%EC%97%AD%EC%84%B1\">(5) 캐시의 지역성</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4\">3) 데이터베이스</a></p>\n<ul>\n<li>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B8%EB%8D%B1%EC%8A%A4\">(1) 데이터베이스 인덱스</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98\">(2) 트랜잭션</a></li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%98-%ED%8A%B9%EC%84%B1acid\">(3) 트랜잭션의 특성(ACID)</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-atomicity-%EC%9B%90%EC%9E%90%EC%84%B1\">(1) Atomicity (원자성)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-consistency%EC%9D%BC%EA%B4%80%EC%84%B1\">(2) Consistency(일관성)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-isolation%EB%8F%85%EB%A6%BD%EC%84%B1\">(3) Isolation(독립성)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-durability-%EC%A7%80%EC%86%8D%EC%84%B1\">(5) Durability (지속성)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EA%B2%A9%EB%A6%AC-%EC%88%98%EC%A4%80transaction-isolation-levels\">(2) 트랜잭션 격리 수준(Transaction Isolation Levels)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-rdbms--nosql\">(3) RDBMS / NOSQL</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-rdbms\">(1) RDBMS</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-nosql\">(2) NOSQL</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B3%B5%ED%95%99\">5) 소프트웨어 공학</a></p>\n<ul>\n<li>\n<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%A0%88%EC%B0%A8-%EC%A7%80%ED%96%A5%EA%B3%BC-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5\">1) 절차 지향과 객체 지향</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%A0%88%EC%B0%A8-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-procedural-programming\">(1) 절차 지향 프로그래밍 (Procedural Programming)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-object-oriented-programming\">(2) 객체 지향 프로그래밍 (Object Oriented Programming)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95\">(3) 객체 지향 프로그래밍 특징</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9\">2) 오버로딩과 오버라이딩</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9-overriding\">(1) 오버라이딩 (Overriding)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9-overloading\">(2) 오버로딩 (Overloading)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EC%A0%90%EC%A7%84%EC%A0%81-%ED%96%A5%EC%83%81%EB%B2%95--%EC%9A%B0%EC%95%84%ED%95%9C-%EC%84%B1%EB%8A%A5%EC%A0%80%ED%95%98%EB%B2%95\">3) 점진적 향상법 / 우아한 성능저하법</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%A0%90%EC%A7%84%EC%A0%81-%ED%96%A5%EC%83%81%EB%B2%95-progressive-enhancement\">(1) 점진적 향상법 (Progressive enhancement)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EC%9A%B0%EC%95%84%ED%95%9C-%EC%84%B1%EB%8A%A5-%EC%A0%80%ED%95%98%EB%B2%95-graceful-degradation\">(5) 우아한 성능 저하법 (graceful degradation)</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4\">4) 디자인 패턴</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EC%8B%B1%EA%B8%80%ED%86%A4-signleton\">(1) 싱글톤 (Signleton)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85-prototype\">(2) 프로토타입 (Prototype)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%ED%8C%A9%ED%86%A0%EB%A6%AC-factory\">(3) 팩토리 (Factory)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EC%B6%94%EC%83%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-abstract-factory\">(4) 추상 팩토리 (Abstract Factory)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EB%B9%8C%EB%8D%94-builder\">(5) 빌더 (Builder)</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-%EB%B3%B4%EC%95%88\">6) 보안</a></p>\n<ul>\n<li>\n<ul>\n<li>\n<p><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%A1%9C%EC%BB%AC-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%84%B8%EC%85%98-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%BF%A0%ED%82%A4\">1) 로컬 스토리지, 세션 스토리지, 쿠키</a></p>\n<ul>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#1-%EB%A1%9C%EC%BB%AC-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80localstorage\">(1) 로컬 스토리지(LocalStorage)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#2-%EC%84%B8%EC%85%98-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80sessionstorage\">(2) 세션 스토리지(SessionStorage)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#3-%EC%BF%A0%ED%82%A4cookie\">(3) 쿠키(Cookie)</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#4-%EC%82%AC%EC%9A%A9-%EC%98%88%EC%8B%9C\">(4) 사용 예시</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#5-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0\">(5) 가져오기</a></li>\n<li><a href=\"/%EB%B2%A1%EC%97%94%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%20%EB%A9%B4%EC%A0%91%20%EC%A7%88%EB%AC%B8(%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91)%20%EC%A7%88%EB%AC%B8%20%EC%A0%95%EB%A6%AC%20%EB%AA%A8%EC%9D%8C%20-%20cs/#6-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0\">(6) 세팅하기</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>","frontmatter":{"title":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - CS","path":"/벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - cs/","images":["images/2.jpg"],"category":"기술 면접","tags":["벡엔드","개발자","면접","기술면접","CS"],"date":"2021-04-08T01:00:00.000Z","components":null,"tweets":null,"summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트 파트"}},"posts":{"edges":[{"node":{"frontmatter":{"type":"portfolio","title":"MOIJA","images":["moija/images/moija.png","moija/images/moija1.png","moija/images/moija2.png","moija/images/moija3.png","moija/images/moija4.png","moija/images/moija5.png"],"path":"/portfolios/moija/","tags":null,"date":"2022-03-02T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"VUELOG","images":["vuelog/images/vuelog.png","vuelog/images/vuelog1.png","vuelog/images/vuelog2.png","vuelog/images/vuelog3.png","vuelog/images/vuelog4.png","vuelog/images/vuelog5.png","vuelog/images/vuelog6.png"],"path":"/portfolios/VUELOG/","tags":null,"date":"2022-03-01T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"DT CENTER","images":["dtcenter/images/dtcenter.png","dtcenter/images/dtcenter1.png","dtcenter/images/dtcenter2.png","dtcenter/images/dtcenter3.png"],"path":"/portfolios/DT CENTER/","tags":null,"date":"2022-02-21T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"COLORBERRY","images":["ColorBerry/images/colorberry.png","ColorBerry/images/colorberry2.png","ColorBerry/images/colorberry3.png","ColorBerry/images/colorberry4.png","ColorBerry/images/colorberry5.png","ColorBerry/images/colorberry6.png","ColorBerry/images/colorberry7.png","ColorBerry/images/colorberry8.png"],"path":"/portfolios/COLORBERRY/","tags":null,"date":"2022-02-20T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 요약","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 요약/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2021-0417T09:24:00000Z","summary":"[2020] 정보 처리 기사 실기 요약 입니다 정처기 공부를 할 때 활용하세요"}}},{"node":{"frontmatter":{"type":null,"title":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - node","images":["images/2.jpg"],"path":"/벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - node/","tags":["벡엔드","개발자","면접","기술면접","node"],"date":"2021-04-20T01:00:00.000Z","summary":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - node"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue/","tags":["프론트엔드","개발자","면접","기술면접","Vue"],"date":"2021-04-15T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue(1)","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue(1)/","tags":["프론트엔드","개발자","면접","기술면접","Vue"],"date":"2021-04-15T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - Vue(1)"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - CSS","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - CSS/","tags":["프론트엔드","개발자","면접","기술면접","CSS"],"date":"2021-04-14T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - CSS"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - React","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - React/","tags":["프론트엔드","개발자","면접","기술면접","React"],"date":"2021-04-14T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - React"}}},{"node":{"frontmatter":{"type":null,"title":"RxJs 정리","images":["images/2.jpg"],"path":"/RxJs 정리/","tags":["벡엔드","개발자","프론트엔드","기술면접","RxJs"],"date":"2021-04-09T01:00:00.000Z","summary":"RxJs 정리"}}},{"node":{"frontmatter":{"type":null,"title":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 기술스택","images":["images/2.jpg"],"path":"/벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 기술스택/","tags":["벡엔드","개발자","면접","기술면접","기술스택"],"date":"2021-04-09T01:00:00.000Z","summary":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 기술스택"}}},{"node":{"frontmatter":{"type":null,"title":"벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - CS","images":["images/2.jpg"],"path":"/벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - cs/","tags":["벡엔드","개발자","면접","기술면접","CS"],"date":"2021-04-08T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트 파트"}}},{"node":{"frontmatter":{"type":null,"title":"three.js 공부","images":["images/2.jpg"],"path":"/three.js 공부/","tags":["프론트엔드","개발자","면접","기술면접","자바스크립트"],"date":"2021-04-07T01:00:00.000Z","summary":"three.js 공부"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(1)","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(1)/","tags":["프론트엔드","개발자","면접","기술면접","자바스크립트"],"date":"2021-04-07T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(1) 파트"}}},{"node":{"frontmatter":{"type":null,"title":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(2)","images":["images/2.jpg"],"path":"/프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(2)/","tags":["프론트엔드","개발자","면접","기술면접","자바스크립트"],"date":"2021-04-07T01:00:00.000Z","summary":"프론트엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - 자바스크립트(2) 파트"}}},{"node":{"frontmatter":{"type":null,"title":"react 공부","images":["images/1.jpg"],"path":"/react 공부/","tags":["react.js","프론트엔드"],"date":"2021-04-05T12:23:00.000Z","summary":"react 공부"}}},{"node":{"frontmatter":{"type":null,"title":"vue 공부 1일차","images":["images/1.jpg"],"path":"/vue공부1일차/","tags":["vue.js","프론트엔드"],"date":"2021-04-04T12:23:00.000Z","summary":"vue 공부 1일차"}}},{"node":{"frontmatter":{"type":null,"title":"vue 공부 1일차","images":["images/1.jpg"],"path":"/vue공부1일차/","tags":["vue.js","프론트엔드"],"date":"2021-04-04T12:23:00.000Z","summary":"vue 공부 1일차"}}},{"node":{"frontmatter":{"type":null,"title":"history api 정리","images":["images/1.jpg"],"path":"/history api 정리/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-03-03T12:23:00.000Z","summary":"history api 정리"}}},{"node":{"frontmatter":{"type":null,"title":"프로그래머스 데브매칭 고양이 정리","images":["images/1.jpg"],"path":"/프로그래머스 데브매칭 고양이 정리/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-03-01T12:23:00.000Z","summary":"프로그래머스 데브매칭 고양이 정리입니다."}}},{"node":{"frontmatter":{"type":"portfolio","title":"ANGULOG","images":["angulog/images/angulog.png","angulog/images/angulog2.png","angulog/images/angulog3.png","angulog/images/angulog4.png","angulog/images/angulog5.png","angulog/images/angulog6.png"],"path":"/portfolios/ANGULOG/","tags":null,"date":"2021-02-23T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"MBTI WORLD","images":["mbtiworld/images/mbtiworld.png","mbtiworld/images/mbtiworld2.png","mbtiworld/images/mbtiworld3.png","mbtiworld/images/mbtiworld4.png","mbtiworld/images/mbtiworld5.png","mbtiworld/images/mbtiworld6.png","mbtiworld/images/mbtiworld7.png","mbtiworld/images/mbtiworld8.png","mbtiworld/images/mbtiworld9.png","mbtiworld/images/mbtiworld10.png"],"path":"/portfolios/MBTI WORLD/","tags":null,"date":"2021-02-19T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 리눅스_TCPIP_신경향","images":["images/1.jpg"],"path":"/[2020] 네트워크 관리사 2급 실기 요점 정리 - 리눅스_TCPIP_신경향/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-01-02T12:01:00.000Z","summary":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 리눅스_TCPIP_신경향입니다."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 라우터","images":["images/1.jpg"],"path":"/[2020] 네트워크 관리사 2급 실기 요점 정리 - 라우터/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-01-01T12:23:00.000Z","summary":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 라우터입니다."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 정리","images":["images/1.jpg"],"path":"/[2020] 네트워크 관리사 2급 실기 요점 정리 - 정리/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-01-01T12:23:00.000Z","summary":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 정리입니다."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 윈도우 서버","images":["images/1.jpg"],"path":"/[2020] 네트워크 관리사 2급 실기 요점 정리 - 윈도우 서버/","tags":["네트워크 관리사 2급","자격증","소프트웨어"],"date":"2021-01-01T12:21:00.000Z","summary":"[2020] 네트워크 관리사 2급 실기 요점 정리 - 윈도우 서버입니다."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 리눅스 마스터 2급 2차 요점 정리","images":["images/1.jpg"],"path":"/[2020] 리눅스 마스터 2급 2차 요점 정리 - 리눅스 일반/","tags":["리눅스 마스터 2급","자격증","소프트웨어"],"date":"2020-12-03T12:21:00.000Z","summary":"[2020] 리눅스 마스터 2급 2차 (1) 리눅스 일반 요점 정리입니다."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 16-단답형 문제(4)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 16-단답형 문제(4)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-10-15T09:24:00000Z","summary":"[2020] 정보 처리 기사 실기 16-단답형 문제(4)입니다 정처기 공부를 할 때 활용하세요"}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 15-단답형 문제(3)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 15-단답형 문제(3)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-10-15T09:22:00000Z","summary":"[2020] 정보 처리 기사 실기 15-단답형 문제(3)입니다 정처기 공부를 할 때 활용하세요"}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 14-단답형 문제(2)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 14-단답형 문제(2)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-10-15T09:21:00000Z","summary":"[2020] 정보 처리 기사 실기 14-단답형 문제(2)입니다 정처기 공부를 할 때 활용하세요"}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 13-단답형 문제(1)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 13-단답형 문제(1)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-10-14T16:21:00000Z","summary":"[2020] 정보 처리 기사 실기 13-단답형 문제(1)입니다 정처기 공부를 할 때 활용하세요"}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 12-정보 용어 정리","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 12-정보 용어 정리/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-10-14T02:21:00.000Z","summary":"2020 정보 처리 기사 실기 12-정보 용어 정리 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 11-제품 소프트웨어 패키징","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 11-제품 소프트웨어 패키징/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T23:03:00.000Z","summary":"2020 정보 처리 기사 제품 소프트웨어 패키징 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(3)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(3)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T21:03:00.000Z","summary":"2020 정보 처리 기사 응용 SW 기초 기술 활용 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(2)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(2)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T21:02:00.000Z","summary":"2020 정보 처리 기사 응용 SW 기초 기술 활용 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(1)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 10-응용 SW 기초 기술 활용(1)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T21:01:00.000Z","summary":"2020 정보 처리 기사 응용 SW 기초 기술 활용 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 9-소프트웨어 보안 구축","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 9-소프트웨어 보안 구축/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T19:00:00.000Z","summary":"2020 정보 처리 기사 소프트웨어 보안 구축 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 8-SQL 응용","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 8-SQL 응용/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-17T12:45:00.000Z","summary":"2020 정보 처리 기사 SQL 응용 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 6-화면 설계","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 6-화면 설계/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-16T17:00:00.000Z","summary":"2020 정보 처리 기사 화면 설계 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 7-애플리케이션 테스트 관리","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 7-애플리케이션 테스트 관리/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-16T17:00:00.000Z","summary":"2020 정보 처리 기사 애플리케이션 테스트 관리 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 5-서버 프로그램 구현","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 5-서버 프로그램 구현/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-16T06:31:00.000Z","summary":"2020 정보 처리 기사 서버 프로그램 구현 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 4-통합 구현","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 4-통합 구현/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-16T05:31:00.000Z","summary":"2020 정보 처리 기사 통합 구현 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 3-데이터 입출력 구현","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 3-데이터 입출력 구현/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-15T17:22:00.000Z","summary":"2020 정보 처리 기사 데이터 입출력 구현 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 2-요구 사항 확인","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 2-요구 사항 확인/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-15T17:21:00.000Z","summary":"2020 정보 처리 기사 요구 사항 확인 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[파이썬] itertools 에 대해서 알아보자","images":["images/4.jpg"],"path":"/[파이썬] itertools 에 대해서 알아보자/","tags":["파이썬","itertools","알고리즘"],"date":"2020-07-15T17:00:00.000Z","summary":"파이썬으로 순열, 조합을 빠르게 구해주는 라이브러리"}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(3)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(3)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-11T22:23:00.000Z","summary":"2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(2)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(2)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-11T22:21:00.000Z","summary":"2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(1)","images":["images/1.jpg"],"path":"/[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(1)/","tags":["정보처리기사 실기","정보처리기사","정처기"],"date":"2020-07-11T20:21:00.000Z","summary":"2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요."}}},{"node":{"frontmatter":{"type":null,"title":"[파이썬] 파이썬을 이용한 이진탐색트리 구현","images":["images/4.jpg"],"path":"/[파이썬] 파이썬을 이용한 이진탐색트리 구현/","tags":["파이썬","알고리즘","이진탐색트리"],"date":"2020-07-06T22:06:00.000Z","summary":"파이썬을 이용한 이진탐색트리 구현"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(3)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(3)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-05-03T01:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(3)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(2)(운영체제)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(2)(운영체제)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-05-02T01:00:00.000Z","summary":"응용 SW 기초 기술 활용"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(1)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(1)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-05-01T01:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(5)-프로그래밍 언어 활용(1)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(3)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(3)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-04-03T03:05:00.000Z","summary":"정보시스템 구축 관리"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(2)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(2)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-04-02T03:05:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(2)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(1)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(1)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-04-01T03:05:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(4)-정보시스템 구축 관리(1)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(3)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(3)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-03-03T02:01:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(3)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(2)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(2)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-03-02T02:01:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(2)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(1)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(1)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-03-01T02:01:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(3)-소프트웨어 설계(1)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(3)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(3)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-02-03T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(3)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(2)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(2)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-02-02T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(2)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(1)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(1)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-02-01T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(2)-소프트웨어 개발(1)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(3)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(3)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-01-03T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(3)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(2)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(2)/","tags":["정보처리기사 필기","정보처리기사"],"date":"2020-01-02T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(2)"}}},{"node":{"frontmatter":{"type":null,"title":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(1)","images":["images/2.jpg"],"path":"/2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(1)/","tags":["정보처리기사 필기","정보처리기사","필기","데이터베이스 구축"],"date":"2020-01-01T05:00:00.000Z","summary":"2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(1)"}}},{"node":{"frontmatter":{"type":"portfolio","title":"CAPTURE BLOG","images":["CaptureBlog/images/capture1.png","CaptureBlog/images/capture2.png","CaptureBlog/images/capture3.png","CaptureBlog/images/capture4.png","CaptureBlog/images/capture5.png","CaptureBlog/images/capture6.png"],"path":"/portfolios/CAPTURE BLOG/","tags":null,"date":"2020-01-01T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"LANGUAGE TOGETHER","images":["languageTogether/images/languagetogether.png","languageTogether/images/languagetogether2.png","languageTogether/images/languagetogether3.png","languageTogether/images/languagetogether4.png","languageTogether/images/languagetogether5.png","languageTogether/images/languagetogether6.png","languageTogether/images/languagetogether7.png","languageTogether/images/languagetogether8.png","languageTogether/images/languagetogether9.png"],"path":"/portfolios/LANGUAGE TOGETHER/","tags":null,"date":"2018-01-01T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"portfolio","title":"MOVIE STAR","images":["moviestar/images/moviestar.png","moviestar/images/moviestar2.png","moviestar/images/moviestar3.png","moviestar/images/moviestar4.png"],"path":"/portfolios/MOVIE STAR/","tags":null,"date":"2018-01-01T00:00:00.000Z","summary":null}}},{"node":{"frontmatter":{"type":"resume","title":"Resume","images":null,"path":"/resume/","tags":null,"date":"2000-01-01T00:00:00.000Z","summary":null}}}]}},"pageContext":{}}}